package pwd.allen.config;

import org.springframework.beans.PropertyEditorRegistrar;
import org.springframework.beans.PropertyEditorRegistry;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * PropertyEditor注册器，注册一个支持yyyy-MM-dd格式的字符串赋值给Date类型属性的属性编辑器
 * 用法：注册进BeanFactory，bean工厂在创建每个bean时会先创建BeanWrapper来包装bean，这个BeanWrapper会加入各种工具包括PropertyEditor
 *
 * PropertyEditor 的功能：字符串与对象属性之间的转换，spring-beans中定义了许多默认的
 *
 * 缺点：
 *      只能完成字符串到Java类型的转换，并不能完成任意类型之间的转换。
 *      由于PropertyEditor是非线程安全，因此对于每一次的类型转换，都需要创建一个新的PropertyEdtitor
 *
 * @author 门那粒沙
 * @create 2020-02-22 17:23
 **/
@Component
public class MyPropertyEditorRegistrar implements PropertyEditorRegistrar {
    @Override
    public void registerCustomEditors(PropertyEditorRegistry registry) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        registry.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
}
